function column_to_delimited(input, character) {
let prefix_item = $('#prefix-item').val();
if (!prefix_item) {
prefix_item = '';
}
let suffix_item = $('#suffix-item').val();
if (!suffix_item) {
suffix_item = '';
}
let prefix_result = $('#prefix-result').val();
if (!prefix_result) {
prefix_result = '';
}
let suffix_result = $('#suffix-result').val();
if (!suffix_result) {
suffix_result = '';
}
var result = prefix_result + prefix_item + replaceAll("\n", suffix_item + character + prefix_item, input).trim() + suffix_item + suffix_result;
if (character.length > 0) {
while (result.trim().substr(result.length - 1) === character)
result = result.slice(0, -1);
while (result.trim().charAt(0) === character)
result = result.substring(1);
}
return result;
}
function convert(input) {
var delimiter = $('#delimiter').val();
return column_to_delimited(input, delimiter);
}
function replaceAll(find, replace, str) {
return str.replace(new RegExp(find, 'g'), replace);
}
function beautify(str) {
var result = '';
var length = str.length;
var i = 0;
var braceCountLeft = 0;
var braceCountRight = 0;
var withinQuotes = false;
while (i < length) {
var c = str[i];
if (c == '"' && (i == 0 || c[i - 1] != '\\')) {
// non-escaped quotes
withinQuotes = !withinQuotes;
}
if (!withinQuotes && (c == '}' || c == '{' || c == ',')) {
console.log('Start####' + result);
// look back and remove carriage returns and whitespace that are already there
var resultIndex = result.length - 1;
while (resultIndex >= 0 && (result[resultIndex] == ' ' || result[resultIndex] == '\r' || result[resultIndex] == '\n' || result[resultIndex] == '\t')) {
resultIndex = resultIndex - 1;
result = result.substr(0, resultIndex + 1);
console.log('char ' + result[resultIndex] + '-----' + result + 'zzz ' + result.length + ' ' + resultIndex);
}
if (c == '{') {
braceCountLeft++;
result += c + '\r' + GetTabs(braceCountLeft - braceCountRight);
} else if (c == '}') {
braceCountRight++;
// precede with carriage return
result += '\r' + GetTabs(braceCountLeft - braceCountRight) + c;
} else if (c == ',') {
result += c + '\r' + GetTabs(braceCountLeft - braceCountRight);
}
var nextChar = '';
// advance through whitespace and remove carriage returns that are already there
while (i < length && (str[i + 1] == ' ' || str[i + 1] == '\r' || str[i + 1] == '\n' || str[i + 1] == '\t')) {
i++;
}
} else {
result += str[i];
}
i++;
}
return result;
}
function GetTabs(count) {
var result = '';
for (var i = 0; i < count; i++) {
result += ' ';
}
return result;
}